package com.haotian.redis.base;

import redis.clients.jedis.Jedis;

public class RedisSentinelAndSimpleBaseQueue extends RedisSentinelAndSimpleBase {
	
	
	
	/**
	 * 从队列左侧压入数据
	 * 
	 * @param key
	 * @param value
	 * @return
	 * @
	 */
	public long lpush(String key, String value)  {
		try (Jedis jedis = getJedis();) {
			return jedis.lpush(key, value);
		}
	}

	/**
	 * 从队列右侧压入数据
	 * 
	 * @param key
	 * @param value
	 * @return
	 * @
	 */
	public long rpush(String key, String value)  {
		try (Jedis jedis = getJedis();) {
			return jedis.rpush(key, value);
		}
	}

	/**
	 * 阻塞形式从左侧消费一条数据 ，多个key 按照先后顺序做优先级消费
	 * 
	 * @param keys
	 * @return
	 * @
	 */
	public String blpop(String... keys)  {
		try (Jedis jedis = getJedis();) {
			return jedis.blpop(0, keys).get(1);
		}
	}

	/**
	 * 阻塞形式从右侧消费一条数据 ，多个key 按照先后顺序做优先级消费
	 * 
	 * @param keys
	 * @return
	 * @
	 */
	public String brpop(String... keys)  {
		try (Jedis jedis = getJedis();) {
			return jedis.brpop(0, keys).get(1);
		}
	}

	/**
	 * 非阻塞形式从右侧消费一条数据
	 * 
	 * @param key
	 * @return data or null
	 * @
	 */
	public String rpop(String key)  {
		try (Jedis jedis = getJedis();) {
			return jedis.rpop(key);
		}
	}

	/**
	 * 
	 * 非阻塞形式从左侧消费一条数据
	 * 
	 * @param key
	 * @return data or null
	 * @
	 */
	public String lpop(String key)  {
		try (Jedis jedis = getJedis();) {
			return jedis.lpop(key);
		}
	}

	/**
	 * 查看队列长度
	 */
	public long llen(String key)  {
		try (Jedis jedis = getJedis();) {
			return jedis.llen(key);
		}
	}
}
